#ifndef __42084F7C_88EE_4c32_B73C_0331C2D6EAC0__
#define __42084F7C_88EE_4c32_B73C_0331C2D6EAC0__

#include "../import/head.h"
#include "../interface/head.h"
#include "../tools/head.h"

//////////////////////////////////////////////////////////////////////////////////////////////////
// 

namespace xos_common
{

    class property_impl : public xos_stl::mem_pool_item< property_impl, thread_lock >,
        public i_property
    {
        typedef std::map< unsigned long, std::string >  STR_MAP;
        typedef STR_MAP::iterator                       STR_ITER;

    public:
        property_impl();
        ~property_impl();

    protected:
        xos::i_lock * m_pLock;
        STR_MAP m_str_map;

    public:
        int init();
        int term();

    public:
        int get_property( unsigned long ulProperty, char * lpszProperty, int nLen, int * lpnLenNeeded );
        int set_property( unsigned long ulProperty, const char * lpszProperty );

        int get_context( char * lpszContext, int nLen, int * lpnNeededLen );
        int set_context( const char * lpszContext );

        int clear();

        int release();
    };

} // so_common

#endif // __42084F7C_88EE_4c32_B73C_0331C2D6EAC0__
